"""
语言提取器模块

提供基于语言独立的符号提取器。

架构:
- base_extractor.py: 基类和共享功能
- swift_extractor.py: Swift 提取器
- objc_extractor.py: Objective-C 提取器
- java_extractor.py: Java 提取器
- kotlin_extractor.py: Kotlin 提取器

使用示例:
    from core.extractors_module import SwiftExtractor

    swift_extractor = SwiftExtractor(config, logger)
    symbols = swift_extractor.extract_symbols_batch(swift_files)
"""

__all__ = [
    # 基类
    'LanguageExtractor',
    'CompilerInfo',

    # 语言提取器
    'SwiftExtractor',
    'ObjCExtractor',
    'JavaExtractor',
    'KotlinExtractor',
]


def __getattr__(name):
    if name == 'LanguageExtractor' or name == 'CompilerInfo':
        from .base_extractor import LanguageExtractor, CompilerInfo
        if name == 'LanguageExtractor':
            return LanguageExtractor
        return CompilerInfo

    if name == 'SwiftExtractor':
        from .swift_extractor import SwiftExtractor
        return SwiftExtractor

    if name == 'ObjCExtractor':
        from .objc_extractor import ObjCExtractor
        return ObjCExtractor

    if name == 'JavaExtractor':
        from .java_extractor import JavaExtractor
        return JavaExtractor

    if name == 'KotlinExtractor':
        from .kotlin_extractor import KotlinExtractor
        return KotlinExtractor

    raise AttributeError(name)


def __dir__():
    return sorted(set(__all__))
